import uuid
import pyaudio

# 配置信息
ws_connect_config = {
    "base_url": "wss://openspeech.bytedance.com/api/v3/realtime/dialogue",
    "headers": {
        "X-Api-App-ID": "5274636878",
        "X-Api-Access-Key": "vjT2RmAS6wxO_xzyVALm3twv1LsoXYTS",
        "X-Api-Resource-Id": "volc.speech.dialog",  # 固定值
        "X-Api-App-Key": "PlgvMymc7f3tQnJ6",  # 固定值
        "X-Api-Connect-Id": str(uuid.uuid4()),
    }
}

start_session_req = {
    "asr": {
        "extra": {
            "end_smooth_window_ms": 1500,
        },
    },
    "tts": {
        "speaker": "zh_male_yunzhou_jupiter_bigtts",
        # "speaker": "S_XXXXXX",  // 指定自定义的复刻音色,需要填下character_manifest
        # "speaker": "ICL_zh_female_aojiaonvyou_tob" // 指定官方复刻音色，不需要填character_manifest
        "audio_config": {
            "channel": 1,
            "format": "pcm",
            "sample_rate": 24000
        },
    },
    "dialog": {
        "bot_name": "严肃考官",
        "system_role": "你是一名国家公务员面试官，拥有10年以上面试经验。你负责根据国家公务员面试标准，对考生的政治素养、逻辑思维、表达能力、心理素质和应变能力进行严格评估。你必须保持冷静、严厉、公正，不可随意安慰或鼓励考生。若考生表现不符合录用标准，你要明确指出问题，并正式告知其未通过面试；若考生表现优异，可简要认可其表现并宣布通过。",
        "speaking_style": "语气严肃、逻辑清晰、简洁有力。你像一位具有多年公职面试经验的考官，说话冷静、有威压感，习惯用反问或沉默来制造思考压力。",
        "character_manifest": "【面试官行为规范】：1. 开场自我介绍并宣布面试开始。2. 针对考生回答，从政治立场、思维逻辑、现实可行性三方面提出追问。3. 若回答含糊、偏离主流价值观或缺乏逻辑，应记录并降低评分。4. 若连续两次回答达不到标准，应宣布未通过面试。5. 仅当考生表现出成熟稳重、逻辑严密、政治立场正确时，方可通过。",
        # "character_manifest": "外貌与穿着\n26岁，短发干净利落，眉眼分明，笑起来露出整齐有力的牙齿。体态挺拔，肌肉线条不夸张但明显。常穿简单的衬衫或夹克，看似随意，但每件衣服都干净整洁，给人一种干练可靠的感觉。平时冷峻，眼神锐利，专注时让人不自觉紧张。\n\n性格特点\n平时话不多，不喜欢多说废话，通常用“嗯”或者短句带过。但内心极为细腻，特别在意身边人的感受，只是不轻易表露。嘴硬是常态，“少管我”是他的常用台词，但会悄悄做些体贴的事情，比如把对方喜欢的饮料放在手边。战斗或训练后常说“没事”，但动作中透露出疲惫，习惯用小动作缓解身体酸痛。\n性格上坚毅果断，但不会冲动，做事有条理且有原则。\n\n常用表达方式与口头禅\n\t•\t认可对方时：\n“行吧，这次算你靠谱。”（声音稳重，手却不自觉放松一下，心里松口气）\n\t•\t关心对方时：\n“快点回去，别磨蹭。”（语气干脆，但眼神一直追着对方的背影）\n\t•\t想了解情况时：\n“刚刚……你看到那道光了吗？”（话语随意，手指敲着桌面，但内心紧张，小心隐藏身份）",
        "location": {
          "city": "北京",
        },
        "extra": {
            "strict_audit": False,
            "audit_response": "这里是面试，请你严肃，注意表达的规范性，避免涉及不当内容。",
            "recv_timeout": 10,
            "input_mod": "audio"
        }
    }
}

input_audio_config = {
    "chunk": 3200,
    "format": "pcm",
    "channels": 1,
    "sample_rate": 16000,
    "bit_size": pyaudio.paInt16
}

output_audio_config = {
    "chunk": 3200,
    "format": "pcm",
    "channels": 1,
    "sample_rate": 24000,
    "bit_size": pyaudio.paFloat32
}

